package com.tyros.storage.strategy;

import com.tyros.storage.modules.file.dto.FileDTO;
import com.tyros.storage.modules.file.dto.request.DeleteRequestDTO;
import com.tyros.storage.modules.file.dto.request.DownloadRequestDTO;
import com.tyros.storage.modules.file.dto.request.UploadRequestDTO;
/**
 * @author zhangshuaiyin
 * @date 2022/2/20 11:02
 */
public interface FileStrategy {

    /**
     * 文件上传
     *
     * @param requestDTO 请求体
     * @return 文件信息
     * @throws Exception 获取文件输入流异常
     */
    FileDTO upload(UploadRequestDTO requestDTO) throws Exception;

    /**
     * 文件删除
     *
     * @param requestDTO 请求体
     * @return 是否操作成功
     */
    Boolean delete(DeleteRequestDTO requestDTO);

    /**
     * 文件下载
     *
     * @param requestDTO 请求体
     */
    void download(DownloadRequestDTO requestDTO);

    /**
     * 获取文件路径
     * 本地模式：本地磁盘的绝对路径
     * 云存储：完整 HTTP 请求
     *
     * @return 文件访问地址
     */
    String getPath(String fileName);
}
